home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / vol_400 / 430_01 / m68kdis / addr.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-12-29  |  2.4 KB  |  76 lines

  1. /*
  2.  *                 Author:  Christopher G. Phillips
  3.  *              Copyright (C) 1994 All Rights Reserved
  4.  *
  5.  *                              NOTICE
  6.  *
  7.  * Permission to use, copy, modify, and distribute this software and
  8.  * its documentation for any purpose and without fee is hereby granted
  9.  * provided that the above copyright notice appear in all copies and
  10.  * that both the copyright notice and this permission notice appear in
  11.  * supporting documentation.
  12.  *
  13.  * The author makes no representations about the suitability of this
  14.  * software for any purpose.  This software is provided ``as is''
  15.  * without express or implied warranty.
  16.  */
  17.  
  18. /*
  19.  * This file contains macros that test whether mode-register combinations
  20.  * match commonly used categories of addressing modes.
  21.  */
  22.  
  23. #define ISDATA(m)    ((m) == 0)
  24. #define ISDIRECT(m)    ((m) == 1)
  25. #define ISINDIRECT(m)    ((m) == 2)
  26. #define ISPOST(m)    ((m) == 3)
  27. #define ISPRE(m)    ((m) == 4)
  28. #define ISDISP(m)    ((m) == 5)
  29. #define ISINDEX(m)    ((m) == 6)
  30. #define ISSHORT(m,r)    ((m) == 7 && (r) == 0)
  31. #define ISLONG(m,r)    ((m) == 7 && (r) == 1)
  32. #define ISPCDISP(m,r)    ((m) == 7 && (r) == 2)
  33. #define ISPCINDEX(m,r)    ((m) == 7 && (r) == 3)
  34. #define ISIMM(m,r)    ((m) == 7 && (r) == 4)
  35.  
  36. /* alterable data */
  37. #define ISADEA(m,r)    (ISDATA(m) | ISINDIRECT(m) | ISPOST(m) | ISPRE(m) \
  38.               | ISDISP(m) | ISINDEX(m) | ISSHORT(m,r) | ISLONG(m,r))
  39.  
  40. /* data minus immediate */
  41. #define ISDEAlessIMM(m,r)    (ISADEA(m,r) | ISPCDISP(m,r) | ISPCINDEX(m,r))
  42.  
  43. /* data */
  44. #define ISDEA(m,r)    (ISDEAlessIMM(m,r) | ISIMM(m,r))
  45.  
  46. /* alterable memory */
  47. #define ISAMEA(m,r)    (ISINDIRECT(m) | ISPOST(m) | ISPRE(m) | ISDISP(m) \
  48.               | ISINDEX(m) | ISSHORT(m,r) | ISLONG(m,r))
  49.  
  50. /* memory */
  51. #define ISMEA(m,r)    (ISAMEA(m,r) | ISIMM(m,r) | ISPCDISP(m,r) \
  52.               | ISPCINDEX(m,r))
  53.  
  54. /* alterable */
  55. #define ISAEA(m,r)    (ISADEA(m,r) | ISDIRECT(m))
  56.  
  57. /* all */
  58. #define ISALLEA(m,r)    (ISDEA(m,r) | ISDIRECT(m))    
  59.  
  60. /* alterable control */
  61. #define ISACEA(m,r)    (ISINDIRECT(m) | ISDISP(m) | ISINDEX(m) | ISSHORT(m,r) \
  62.               | ISLONG(m,r))
  63.  
  64. /* alterable control plus predecrement */
  65. #define ISACEAplusPRE(m,r)    (ISACEA(m,r) | ISPRE(m))
  66.  
  67. /* control */
  68. #define ISCEA(m,r)    (ISACEA(m,r) | ISPCDISP(m,r) | ISPCINDEX(m,r))
  69.  
  70. /* control plus postincrement */
  71. #define ISCEAplusPOST(m,r)    (ISCEA(m,r) | ISPOST(m))
  72.  
  73. /* alterable data  minus data */
  74. #define ISADEAlessDATA(m,r)    (ISINDIRECT(m) | ISPOST(m) | ISPRE(m) \
  75.             | ISDISP(m) | ISINDEX(m) | ISSHORT(m,r) | ISLONG(m,r))
  76.